//
//  NSString+Additions.h
//  HSKCommon
//
//  Created by Carl on 2016/11/23.
//  Copyright © 2016年 Carl. All rights reserved.
//

#import <UIKit/UIKit.h>
#import <CoreGraphics/CoreGraphics.h>

#define StringNilOrEmpty(_str) [NSString stringNilOrEmpty:_str]

/**************************判空、去空格**********************************/
@interface NSString (Additions)


/**
 字符串判空: nil、NULL、NSNull、length == 0

 @param string 校验字符串
 @return 是否为nil、NULL、NSNull、length == 0
 */
+ (BOOL)stringNilOrEmpty:(NSString *)string;

/**
 去除字符串空格
 */
- (NSString *)trim;

@end

/****************************编码********************************/
@interface NSString (Code)
/**
 md5
 */
- (NSString *)md5;

/**
 urlEncode
 */
- (NSString *)urlEncode;

/**
 urlDecode
 */
- (NSString *)urlDecode;


/**
 保证仅进行一次urlEncode的字符串
 */
- (NSString *)aUrlEncode;

@end

/***************************计算字符串Size*********************************/
@interface NSString (Size)

- (CGSize)sizeWithFont:(UIFont *)font boundWidth:(CGFloat)width;
- (CGSize)sizeWithFont:(UIFont *)font boundWidth:(CGFloat)width lineBreak:(NSInteger)lineBreak;
- (CGSize)sizeWithFont:(UIFont *)font boundSize:(CGSize)size;
- (CGSize)sizeWithFont:(UIFont *)font boundSize:(CGSize)size lineBreak:(NSInteger)lineBreak;

@end

/************************格式处理************************************/
@interface NSString (Format)

/**
 *  汉字转大写拼音
 *
 *  @return 大写汉语拼音字符串
 */
- (NSString *)chinesePhoneticLetter;


/**
 格式化手机号
 例：152-0988-4435，152 0988 4435等
 */
- (NSString*)formatPhoneNumberStringWithSeparator:(NSString *)separator;


/**
 手机号中间4位****显示
 */
- (NSString*)formatSecrectPhoneNumberString;


@end

/************************字符串校验************************************/
@interface NSString (Valid)


/**
 正则匹配

 @param predicate 正则字符串 [NSPredicate predicateWithFormat:@"SELF MATCHES %@", predicate];
 @return 是否匹配
 */
- (BOOL)isValidWithPredicate:(NSString *)predicate;

/**
 校验手机号
 */
- (BOOL)isValidPhoneNumber;

/**
校验邮箱
 */
- (BOOL)isValidEmail;

/**
校验身份证号码
 */
- (BOOL)isValidIDCardNumber;

/**
校验仅含数字
 */
- (BOOL)isOnlyNumber;

/**
校验仅含汉字
 */
- (BOOL)isOnlyChinese;


@end



